import os
import sys
import django
import shutil
from pathlib import Path

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'fresh_chain_backend.settings')
django.setup()

# 导入模型
from products.models import Product, Category

# 图片文件夹路径
IMAGE_SOURCE_DIR = Path(r'e:\0611\commodity  photograph\commodity  photograph')

# Django项目的media目录
BASE_DIR = Path(__file__).resolve().parent
MEDIA_ROOT = BASE_DIR / 'media'
PRODUCTS_MEDIA_DIR = MEDIA_ROOT / 'products'

# 确保目标目录存在
if not PRODUCTS_MEDIA_DIR.exists():
    PRODUCTS_MEDIA_DIR.mkdir(parents=True)

# 图片文件名与产品名称的映射
IMAGE_PRODUCT_MAPPING = {
    'apple.png': '苹果',
    'banana.jpg': '香蕉',
    'orange.jpg': '橙子',
    'grape.jpg': '葡萄',
    'watermelon.jpg': '西瓜',
    'cabbage.jpg': '白菜',
    'potato.jpg': '土豆',
    'tomato.jpg': '西红柿',
    'Cucumber.jpg': '黄瓜',
    'eggplant.jpg': '茄子',
    'pork.jpg': '猪肉',
    'beef.jpg': '牛肉',
    'mutton.jpg': '羊肉',
    'chicken.jpg': '鸡肉',
    'duck meat.jpg': '鸭肉',
    'sea bass.jpg': '鲈鱼',
    'shrimp.jpg': '虾',
    'crab.jpg': '螃蟹',
    'shellfish.jpg': '贝类',
    'squid.jpg': '鱿鱼'
}

def update_product_images():
    print('开始更新产品图片...')
    
    # 复制图片文件并更新产品的image_url
    for image_file in IMAGE_SOURCE_DIR.glob('*.*'):
        if image_file.name in IMAGE_PRODUCT_MAPPING:
            product_name = IMAGE_PRODUCT_MAPPING[image_file.name]
            
            # 查找对应的产品
            products = Product.objects.filter(name=product_name)
            if not products.exists():
                print(f'未找到产品: {product_name}')
                continue
            
            # 复制图片文件到media/products目录
            destination = PRODUCTS_MEDIA_DIR / image_file.name
            shutil.copy2(image_file, destination)
            
            # 更新产品的image_url字段
            for product in products:
                # 设置相对于MEDIA_URL的路径
                relative_path = f'products/{image_file.name}'
                product.image_url = relative_path
                product.save()
                print(f'已更新产品 {product.name} 的图片URL: {relative_path}')
        else:
            print(f'未找到图片 {image_file.name} 对应的产品')
    
    print('产品图片更新完成！')

if __name__ == '__main__':
    update_product_images()